namespace CCStatistics.Domain.Api.Interfaces
{
    using System.Collections.Generic;

    using ThoughtWorks.CruiseControl.Core;
    using ThoughtWorks.CruiseControl.Core.Publishers.Statistics;

    /// <summary>
    /// Interface wrapper for the IProject interface of CruiseControl.
    /// This allows us to add functionality and extend the interface
    /// CruiseControl via the CCStatsProject class
    /// </summary>
    public interface ICCStatsProject : IProject
    {
        /// <summary>
        /// Gets the get integration repository.
        /// </summary>
        /// <value>The get integration repository.</value>
        new IIntegrationRepository IntegrationRepository { get; }

        /// <summary>
        /// Gets the statistics for a publisher.
        /// </summary>
        /// <returns></returns>
        List<Statistic> StatisticsForPublisher { get; }

        /// <summary>
        /// Gets the log directory.
        /// </summary>
        /// <returns></returns>
        string BuildLogDirectory { get; }

        /// <summary>
        /// Gets the stats post publisher.
        /// </summary>
        /// <returns></returns>
        ICCStatisticsPublisher StatsPostPublisher { get; }
    }
}